/*
 * ModelLoaderObject.h
 *
 *  Created on: 03.10.2012
 *      Author: caffeine
 */

#ifndef MODELLOADEROBJECT_H_
#define MODELLOADEROBJECT_H_

#include "ModelObject.h"

#include <ISerializationObject.h>

namespace irr{
namespace object{

/***
* @class ModelLoaderObject
* Реализует возможность загружать и выгружать модель
* */
class ModelLoaderObject:public virtual ISerializationObject{
private:
	ModelObject*modelObject;
	bool sync_load;
public:
	/***
	* Конструктор
	*
	* @param modelObject модель, которой требуется управлять. Может быть равной NULL, но загрузка модели работать не будет
	* @param sync_load TRUE, если загрузка должна быть синхронная, иначе FALSE
	* */
	ModelLoaderObject(ModelObject*modelObject,bool sync_load);
	virtual ~ModelLoaderObject();
	/***
	* Устанавливает модель
	*
	* @param model модель, которую нужно устанавить. Может быть равным NULL
	* */
	virtual void setModel(ModelObject*model);
	
	virtual void giveModel(ModelObject*model);

	virtual ModelObject*getModel();
	
	virtual bool isModelLoaded();

	/***
	* Загружает модель выбранным методом (см. параметр sync_load в конструкторе)
	* */
	virtual void loadModel();
	
	/***
	* Выгружает модель выбранным методом (см. параметр sync_load в конструкторе)
	* */
	virtual void unloadModel();
};

}//namespace object
}//namespace irr

#endif /* MODELLOADEROBJECT_H_ */
